package core;

import java.io.IOException;

import core.generator.GeradorDeCodigo;

public class MainGerador {
	public static void main(String[] args) throws IOException {
		String entrada = "";
		String xmi = "";
		String outputDir = "CompiladorOclJml SRC";
		boolean compilar = false;
		
		if (args.length == 2) {
			entrada = args[0];
			xmi = args[1];
		} else if (args.length == 3) {
			if (args[0].equals("--jmlc")) {
				entrada = args[1];
				xmi = args[2];
				compilar = true;
			} else {
				entrada = args[0];
				xmi = args[1];
				outputDir = args[2];
			}
		} else if (args.length == 4) {
			if (args[0].equals("--jmlc")) {
				entrada = args[1];
				xmi = args[2];
				outputDir = args[3];
				compilar = true;
			} else {
				entrada = args[0];
				xmi = args[1];
				outputDir = args[2];
			}
		} else {
			System.err
					.println("Forma de uso incorreta! Veja abaixo a formas correta para executar!\n");
			System.err
					.println("\tjava -jar CompiladorOclJml.jar <endereco_do_arquivo_ocl> <endereco_do_xmi> <endereco_saida>");
			System.err
					.println("\t\t\tou (se desejar compilar os arquivos gerados)");
			System.err
					.println("\tjava -jar CompiladorOclJml.jar --jmlc <endereco_do_arquivo_ocl> <endereco_do_xmi> <endereco_saida>");
			System.err.println();
			System.err.println("Obs.: o parametro <endereco_saida> eh opcional!");
			System.exit(1);
		}
		
		try {
			MainSemantico.executeSemanticAnalyzer(entrada, xmi);
			GeradorDeCodigo.generateJmlCode(outputDir);
			if (compilar)
				GeradorDeCodigo.compileJmlCode(outputDir);
		} catch (Exception e) {
			System.out
					.println(">>> Ocorreu um erro durante a analise, impossivel continuar, veja os logs abaixo:");
			System.out.println(e.getMessage());
			
			if (e instanceof NullPointerException) {
				e.printStackTrace();
			}
		}

		System.out.println("=======================================");
	}
}
